package com.example.orderflow.service;

import java.util.List;

import com.example.orderflow.entity.query.OrderInfoQuery;
import com.example.orderflow.entity.po.OrderInfo;
import com.example.orderflow.entity.vo.PaginationResultVO;


/**
 *  业务接口
 */
public interface OrderInfoService {

	/**
	 * 根据条件查询列表
	 */
	List<OrderInfo> findListByParam(OrderInfoQuery param);

	/**
	 * 根据条件查询列表
	 */
	Integer findCountByParam(OrderInfoQuery param);

	/**
	 * 分页查询
	 */
	PaginationResultVO<OrderInfo> findListByPage(OrderInfoQuery param);

	/**
	 * 新增
	 */
	Integer add(OrderInfo bean);

	/**
	 * 批量新增
	 */
	Integer addBatch(List<OrderInfo> listBean);

	/**
	 * 批量新增/修改
	 */
	Integer addOrUpdateBatch(List<OrderInfo> listBean);

	/**
	 * 多条件更新
	 */
	Integer updateByParam(OrderInfo bean,OrderInfoQuery param);

	/**
	 * 多条件删除
	 */
	Integer deleteByParam(OrderInfoQuery param);

	/**
	 * 根据OrderId查询对象
	 */
	OrderInfo getOrderInfoByOrderId(String orderId);


	/**
	 * 根据OrderId修改
	 */
	Integer updateOrderInfoByOrderId(OrderInfo bean,String orderId);


	/**
	 * 根据OrderId删除
	 */
	Integer deleteOrderInfoByOrderId(String orderId);

	/**
	 * 查询全部数据
	 */
	List<OrderInfo> getAllOrders();

	/**
	 * 根据orderIds批量查询数据
	 */
	List<OrderInfo> getOrderInfoByOrderIds(List<String> orderIds);

	/**
	 * @create: 2024/7/12 16:07
	 * @description: 初始化订单基本信息:数据库中创建订单基本信息
	 * @param: orderId 订单号
	 * @param: orderType 订单类型
	 * @param: orderUnit 订单单位
	 * @param: contractNumber 合同号
	 * @param: salesManager 销售经理
	 * @param: userName 创建人
	 * @param: orderDeadline 订单截止日期
	 * @return
	 */
	void initializationOrderInfo(String orderId,String orderType,String orderUnit,
								String contractNumber,String salesManager,String Founder,
								String orderDeadline);

	/****
	 * @create: 2024/7/12 16:07
	 * @description: 更改订单审批状态（APPROVE_STATUS）
	 * @param: orderId 订单号
	 * @param: approveStatu 订单审批状态
	 * @return OrderInfo
	 */
	OrderInfo updateApproveStatusByOrderIdAndApproveStatus(String orderId,String approveStatus);

	/****
	 * @create: 2024/7/12 16:07
	 * @description: 更改订单状态（ORDER_STATU）
	 * @param: orderId 订单号
	 * @param: orderStatu 订单状态
	 * @param: voidedBy 操作人
	 * @return OrderInfo
	 */
	OrderInfo updateOrderStatuAndVoidedByByOrderIdAndOrderStatuAndVoidedBy(String orderId,String orderStatu,String voidedBy);

	/**
	 * 更新订单的审批阶段
	 */
	OrderInfo updateOrderInfoLevelName(String orderId,String levelName);

	/****
	 * @create: 2024/7/12 16:07
	 * @description: 更改订单截止日期（OrderDeadline）
	 * @param: orderId 订单号
	 * @param: orderDeadline 订单截止日期
	 * @return OrderInfo
	 */
	OrderInfo updateOrderDeadlineByOrderId(String orderId,String orderDeadline);

	/****
	 * @create: 2024/7/12 16:07
	 * @description: 更改订单设备总数（devices_number）
	 * @param: orderId 订单号
	 * @param: devicesNumber 订单设备总数
	 * @return OrderInfo
	 */
	OrderInfo updateDevicesNumberByOrderId(String orderId,String devicesNumber);


}